package com.feri.ssm.interceptor;

import com.alibaba.fastjson.JSON;
import com.feri.ssm.vo.R;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 邢朋辉
 * @Date: 2022/11/18 16:18
 */
public class HelloInterceptor implements HandlerInterceptor {
    /**
     * 预处理
     * 返回值 是否放行 true放行，false 拦截*/
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.err.println("预处理");
        //如果请求参数不携带版本号，就拦截
        String version=request.getParameter("version");
        if(version!=null && version.length()>0){
            return true;
        }else {
            //拦截的时候，需要返回内容
            response.setContentType("application/json;charset=UTF-8");
            response.getWriter().println(JSON.toJSONString(R.fail()));
            return false;
        }
    }

    /**
     * 后置处理
     * 映射方法执行之后，再执行*/
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.err.println("后置处理");
    }

    /**
     * 整个请求，生成视图之后，再执行  资源回收等操作*/
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.err.println("请求处理结束");
    }
}
